package DAO;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import DTO.DTO_Mesa;
import DTO.DTO_MesaSimple;
import Entities.Entity_Mesa;
import Hibernate.HibernateUtil;

public class DAO_Mesa {
		
		private static DAO_Mesa instancia = null;
		private static SessionFactory sf = null;

		public static DAO_Mesa getInstancia(){
			if(instancia == null){
				sf = HibernateUtil.getSessionFactory();
				instancia = new DAO_Mesa();
			} 
			return instancia;
		}
		
		public List<DTO_Mesa> getMesasDisponibles(){
			Session session = sf.openSession();
			String consulta = "select m from Entity_Mesa m where a.estado = ?";
			Query q = session.createQuery(consulta).setString(0, "Disponible");
			List<Entity_Mesa> mesas = q.list();
			List<DTO_Mesa> mesasDTO = new ArrayList<DTO_Mesa>();
			for(Entity_Mesa m: mesas){
				DTO_MesaSimple me = new DTO_MesaSimple();
				/*
				 * Convertir la mesa entity a mesa dto para devolver el array de dtos
				 */
				mesasDTO.add(me);
			}
						
			return mesasDTO;
		}
		
		public void updateMesa(DTO_Mesa mesa){
			Entity_Mesa aux = new Entity_Mesa();
			/*
			 * convierto la mesa dto que me pasaron por parametro a la entity
			*/
			/*Abro sesion y grabo el objeto*/
			Session session = sf.openSession();
			session.beginTransaction();
			session.persist(aux);
			session.flush();
			session.getTransaction().commit();
			session.close();
		}
		

		
	
}
